package com.kang.user.client;

import com.kang.common.R;
import com.kang.user.to.BrandTo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

/**
 * Feign Client 接口
 *
 * 提供与 "kang-manager" 服务的远程调用能力，包括品牌的增删查功能。
 *
 * 使用熔断机制以提高系统的可靠性。
 */
@FeignClient(value = "kang-manager", fallbackFactory = ManagerClientFactoryImpl.class)
public interface ManagerClient {

	/**
	 * 调用 "kang-manager" 服务的 /brand/list 接口，获取品牌列表。
	 *
	 * @param cookie 请求头中的 Cookie 信息
	 * @return 品牌列表的响应对象
	 */
	@GetMapping(value = "/brand/list")
	R findAll(@RequestHeader(name = "Cookie", required = false) String cookie);

	/**
	 * 调用 "kang-manager" 服务的 /brand/findById/{id} 接口，根据 ID 查询品牌信息。
	 *
	 * @param id 品牌 ID
	 * @return 品牌信息的响应对象
	 */
	@GetMapping("/brand/findById/{id}")
	R findById(@PathVariable("id") Long id);

	/**
	 * 调用 "kang-manager" 服务的 /brand/add 接口，保存品牌信息。
	 *
	 * @param brand 品牌传输对象
	 * @return 操作结果的响应对象
	 */
	@PostMapping("/brand/add")
	R add(@RequestBody BrandTo brand);
}
